%%----------------------------------------------------
%% 定时器数据结构
%% @author yeahoo2000@gmail.com
%% @end
%%----------------------------------------------------

-define(week_ms, 604800000).
-define(day_ms, 86400000).
-define(hour_ms, 3600000).
-define(half_hour_ms, 1800000).
-define(minu_ms, 60000).
-define(sec_ms, 1000).
-define(week_ms(N), (?week_ms * (N))).
-define(day_ms(N), (?day_ms * (N))).
-define(hour_ms(N), (?hour_ms * (N))).
-define(minu_ms(N), (?minu_ms * (N))).
-define(sec_ms(N), (?sec_ms * (N))).


%% 定时器数据结构
-record(timer, {
        %% 定时器ID
        id                  :: term()
        %% 下次触发时间（毫秒）
        ,timeout = 1000     :: pos_integer()
        %% 回调模块
        ,m                  :: undefined | atom()
        %% 回调函数
        ,f                  :: function() | atom()
        %% 参数函数，在回调时系统会自动在前面添加Role参数
        ,a = []             :: [term()]
        %% 调用次数(-1表示无限次)
        ,times = 1          :: integer()

        %% 下次触发时间(由内部自动设置)
        ,next_tick = 0      :: non_neg_integer()
        %% 设定起始时间(由内部自动设定)
        ,set_time = 1       :: pos_integer()
    }
).

%% 角色中的timer相关数据
-record(rtimer, {
        %% 当前定时器引用
        ref                 :: undefined | reference()
        %% 定时器校验标识
        ,key                :: undefined | reference()
        %% 已启动的定时器
        ,timers = []        :: [#timer{}]
    }
).

%% 非角色进程timer相关数据
-record(s_timer, {
        %% 当前定时器引用
        ref                 :: undefined | reference()
        %% 已启动的定时器
        ,timers = []        :: [#timer{}]
    }
).
